package controllers;

import play.*;
import play.data.validation.MaxSize;
import play.data.validation.MinSize;
import play.data.validation.Required;
import play.mvc.*;

import java.util.*;

import models.*;

@With(Secure.class)

public class Messages extends Application
{
	// Ajouter un message à un sujet
	public static void ajouter(long sujet_id)
	{
		Sujet suj = Sujet.findById(sujet_id);
		render(suj);
	}
	
	// Valide l'ajout d'un sujet
	public static void ajouterAction(long sujet_id,
									@Required 
									@MaxSize(50)
									@MinSize(5)
									String titre_message,
									@Required
									@MinSize(10)
									String contenu_message)
	{
		Utilisateur user = Utilisateur.find("byPseudo", Security.connected()).<Utilisateur>first();
		Sujet suj = Sujet.findById(sujet_id);
		String message = "";
		
		
		if(validation.hasErrors())
		{
			render("Messages/ajouter.html", suj, titre_message, contenu_message);
		}		
		
		else
		{
			Message msg = new Message(suj, user, titre_message, contenu_message, new Date()).save();
			Sujets.show(sujet_id);
		}
	}
	
	// Editer un message
	public static void editer(long msg_id, long suj_id)
	{
		Message msg = Message.findById(msg_id);
		
		if(Utilisateur.find("byPseudo", Security.connected()).<Utilisateur>first().id == msg.utilisateur.id)
		{
			Sujet suj = Sujet.findById(suj_id);
			String titre_message = msg.titre_message;
			String contenu_message = msg.contenu_message;
			
			render(suj, msg_id, titre_message, contenu_message);			
		}
		
		else
		{
			Sujets.show(suj_id);
		}
	}
	
	// Valide l'édition
	public static void editerAction(long sujet_id, long msg_id,
			@Required 
			@MaxSize(50)
			@MinSize(5)
			String titre_message,
			@Required
			@MinSize(10)
			String contenu_message)
	{
		Utilisateur user = Utilisateur.find("byPseudo", Security.connected()).<Utilisateur>first();
		Sujet suj = Sujet.findById(sujet_id);
		String message = "";
		Message msg = Message.findById(msg_id);

		// Sécurisation de l'édition, uniquement par l'auteur
		if(Utilisateur.find("byPseudo", Security.connected()).<Utilisateur>first().id == msg.utilisateur.id)
		{
			if(validation.hasErrors())
			{
				render("Messages/editer.html", suj, msg_id, titre_message, contenu_message);
			}		
			
			else
			{
				msg.contenu_message = contenu_message ;
				msg.titre_message = titre_message;
				msg.save();
				Sujets.show(sujet_id);
			}			
		}
		
		else
		{
			Sujets.show(sujet_id);
		}
	}
}
